package com.example.chamberlainserver.config;

import com.github.pagehelper.PageInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.Properties;

/**
 * PageHelper分页插件配置类
 */
@Configuration
public class PageHelperConfig {

    /**
     * 配置PageHelper分页插件
     * 
     * @return PageInterceptor实例
     */
    @Bean
    public PageInterceptor pageInterceptor() {
        PageInterceptor pageInterceptor = new PageInterceptor();
        Properties properties = new Properties();
        
        // 设置数据库类型（可选）
        properties.setProperty("helperDialect", "mysql");
        
        // 设置分页合理化参数，当该参数设置为 true 时，pageNum<=0 时会查询第一页，pageNum>pages（超过总数时），会查询最后一页
        properties.setProperty("reasonable", "true");
        
        // 支持通过 Mapper 接口参数来传递分页参数
        properties.setProperty("supportMethodsArguments", "true");
        
        // 设置为true时，如果pageSize=0或者RowBounds.limit = 0就会查询出全部的结果
        properties.setProperty("pageSizeZero", "true");
        
        // 设置参数映射，用于从对象中根据属性名取值
        properties.setProperty("params", "count=countSql;pageNum=pageNum;pageSize=pageSize;reasonable=reasonable;pageSizeZero=pageSizeZero");
        
        pageInterceptor.setProperties(properties);
        return pageInterceptor;
    }
}